//如果不是vue使用导入模块,导入时该模块的导出要有东西
//比如下面导出的apis在vuex中使用要导出export default apis
import axios from '../utils/axios'
import apis from '../apis'

const toTree=(data)=>{
	var rs={};
	for(let i=0;i<data.length;i++){
		var permiss=data[i];
		if(permiss.parentid==0){
			//re[key]=value  将permiss._id作为对象的key,又将整个permiss作为其value值
			rs[permiss._id]=permiss
			permiss.children=[];
		}
	}
	for(let i=0;i<data.length;i++){
		var permiss=data[i];
		for(var key in rs){
			if(permiss.parentid==key){
				rs[key].children.push(permiss)
			}
		}
	}
//	console.log(rs);
//	console.log("测试")
return rs;
}

// 存储所有和system模块相关的所有状态
const state = {
    allMenus: [],
    allPermission:[],
    allRole:[],
    allGames:[]
}
/*
vuex的每一个模块都有和store对象一样的属性和方法
*/ 
const getters = {
    allMenus(){
       return toTree(state.allMenus);
    },
    allPermission(){
    	 return toTree(state.allPermission);
    },
    allRole(){
    	//state中的数据
    	return state.allRole
    },
    allGames(){
    	return state.allGames
    }
    
}
// 所有同步修改的状态的行为都在mutations提供的函数里进行
const mutations = {
    LOADALLMENUS(state,payload){
        state.allMenus = payload;
    },
    LOADALLPREMISSIONS(state,payload){
    	state.allPermission=payload
    },
    LOADALLROLES(state,payload){
    	state.allRole=payload
    },
    LOADALLGAMES(state,payload){
    	state.allGames=payload
    }
}

// 在这里进行异步数据请求,然后将请求到的数据提交到mutations里的函数进行状态的变更
const actions = {
	loadallpermissions({commit},payload){
		//要打印此处的,应该先调用 去一个vue文件中 this.$store.dispatch("loadallpermissions")
//		console.log("加载所有权限");
//		console.log(apis);
		axios.get(apis.findAllPermission).then((res)=>{
			console.log(res.data.allPermission)
			commit("LOADALLPREMISSIONS",res.data.allPermission)
		})
	},
	loadallroles({commit},payload){
		axios.get(apis.findAllRoles).then((res)=>{
//			console.log(res)
			commit("LOADALLROLES",res.data.allRoles)
		})
	},
	loadallgames({commit},payload){
		axios.get(apis.findAllGames).then((res)=>{
			console.log(res)
			commit("LOADALLGAMES",res.data.data)
		})
	}
}


export default {
    getters,
    state,
    mutations,
    actions
}